export function isString(o) {
  // 是否字符串
  return isType(o, 'String');
}

export function isNumber(o) {
  // 是否数字
  return isType(o, 'Number');
}

export function isBoolean(o) {
  // 是否boolean
  return isType(o, 'Boolean');
}

export function isFunction(o) {
  // 是否函数
  return isType(o, 'Function');
}

export function isUndefined(o) {
  // 是否undefined
  return isType(o, 'Undefined');
}

export function isObject(o) {
  // 是否对象
  return isType(o, 'Object');
}

export function isArray(o) {
  // 是否数组
  return isType(o, 'Array');
}

export function isDate(o) {
  // 是否时间
  return isType(o, 'Date');
}

export function isRegExp(o) {
  // 是否正则
  return isType(o, 'RegExp');
}

export function isPromise(o) {
  // 是否Promise对象
  return isType(o, 'Promise');
}

export function isFalse(o) {
  // 是否为false
  if (!o || o === 'null' || o === 'undefined' || o === 'NaN' || o === 'false') {
    return true;
  }
  return false;
}

export function isTrue(o) {
  // 是否为true
  return !isFalse(o);
}

export function isNull(o) {
  // 是否为null
  return isType(o, 'Null');
}

export function isError(o) {
  // 是否错误对象
  return isType(o, 'Error');
}

export function isSet(o) {
  // 是否Set对象
  return isType(o, 'Set');
}

export function isSymbol(o) {
  // 是否Symbol函数
  return isType(o, 'Symbol');
}

export function isType(o, type) {
  return Object.prototype.toString.call(o).slice(8, -1) === type;
}
